iT邦幫忙

1

Day17改進策略問題(2)

d17
  • 分享至 

  • xImage
  •  

原本的策略都是使用100%資金下單,髓然簡單但風險超高,所以改進了四個重點固定金額倉位、固定比例倉位、根據波動度調整、加入止損/止盈。

for i in range(1, len(df_test)):
        price_prev = df_test["close"].iloc[i - 1]
        price_now = df_test["close"].iloc[i]
        rsi = df_test["RSI"].iloc[i]
        pred = df_test["Pred"].iloc[i - 1]
        atr = df_test["ATR"].iloc[i]
	
        # 如果沒有持倉,檢查是否進場
        if position is None:
            if pred == 1 and rsi > 50:
                position = "long"
                entry_price = price_now
                entry_capital = balance * position_size_ratio
                balance -= entry_capital * fee_rate  # 扣手續費
            elif pred == 0 and rsi < 50:
                position = "short"
                entry_price = price_now
                entry_capital = balance * position_size_ratio
                balance -= entry_capital * fee_rate  # 扣手續費

        # 若已有持倉,檢查出場條件
        elif position == "long":
            change = (price_now - entry_price) / entry_price
            stop_loss = -atr_multiplier * atr / entry_price
            take_profit = take_profit_ratio
            if change <= stop_loss or change >= take_profit:
                pnl = entry_capital * change
                balance += entry_capital + pnl - entry_capital * fee_rate
                trades.append(pnl / entry_capital)
                position = None
        elif position == "short":
            change = (entry_price - price_now) / entry_price
            stop_loss = -atr_multiplier * atr / entry_price
            take_profit = take_profit_ratio
            if change <= stop_loss or change >= take_profit:
                pnl = entry_capital * change
                balance += entry_capital + pnl - entry_capital * fee_rate
                trades.append(pnl / entry_capital)
                position = None

        equity_curve.append(balance)

    df_test["Equity"] = equity_curve

https://ithelp.ithome.com.tw/upload/images/20251005/20178967fXm2OIcPFw.png


圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言